1 /* 2 3 Boost Software License - Version 1.0 - August 17th, 2003 4 5 Permission is hereby granted, free of charge, to any person or organization 6 obtaining a copy of the software and accompanying documentation covered by 7 this license (the "Software") to use, reproduce, display, distribute, 8 execute, and transmit the Software, and to prepare derivative works of the 9 Software, and to permit third-parties to whom the Software is furnished to 10 do so, all subject to the following: 11 12 The copyright notices in the Software and this entire statement, including 13 the above license grant, this restriction and the following disclaimer, 14 must be included in all copies of the Software, in whole or in part, and 15 all derivative works of the Software, unless such copies or derivative 16 works are solely in the form of machine-executable object code generated by 17 a source language processor. 18 19 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT 22 SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE 23 FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, 24 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 25 DEALINGS IN THE SOFTWARE. 26 27 */ 28 29 module derelict.purple.certificate; 30 31 import derelict.glib.gtypes; 32 import derelict.glib.glibconfig; 33 import derelict.glib.glist; 34 import derelict.glib.gslist; 35 import derelict.glib.garray; 36 import core.stdc.time; 37 38 extern (C): 39 40 alias _Anonymous_0 PurpleCertificateVerificationStatus; 41 alias _PurpleCertificate PurpleCertificate; 42 alias _PurpleCertificatePool PurpleCertificatePool; 43 alias _PurpleCertificateScheme PurpleCertificateScheme; 44 alias _PurpleCertificateVerifier PurpleCertificateVerifier; 45 alias _PurpleCertificateVerificationRequest PurpleCertificateVerificationRequest; 46 alias void function (_Anonymous_0, void*) PurpleCertificateVerifiedCallback; 47 48 enum _Anonymous_0 49 { 50 PURPLE_CERTIFICATE_INVALID = 0, 51 PURPLE_CERTIFICATE_VALID = 1 52 } 53 54 struct _PurpleCertificate 55 { 56 PurpleCertificateScheme* scheme; 57 gpointer data; 58 } 59 60 struct _PurpleCertificatePool 61 { 62 gchar* scheme_name; 63 gchar* name; 64 gchar* fullname; 65 gpointer data; 66 gboolean function () init; 67 void function () uninit; 68 gboolean function (const(gchar)*) cert_in_pool; 69 PurpleCertificate* function (const(gchar)*) get_cert; 70 gboolean function (const(gchar)*, PurpleCertificate*) put_cert; 71 gboolean function (const(gchar)*) delete_cert; 72 GList* function () get_idlist; 73 void function () _purple_reserved1; 74 void function () _purple_reserved2; 75 void function () _purple_reserved3; 76 void function () _purple_reserved4; 77 } 78 79 struct _PurpleCertificateScheme 80 { 81 gchar* name; 82 gchar* fullname; 83 PurpleCertificate* function (const(gchar)*) import_certificate; 84 gboolean function (const(gchar)*, PurpleCertificate*) export_certificate; 85 PurpleCertificate* function (PurpleCertificate*) copy_certificate; 86 void function (PurpleCertificate*) destroy_certificate; 87 gboolean function (PurpleCertificate*, PurpleCertificate*) signed_by; 88 GByteArray* function (PurpleCertificate*) get_fingerprint_sha1; 89 gchar* function (PurpleCertificate*) get_unique_id; 90 gchar* function (PurpleCertificate*) get_issuer_unique_id; 91 gchar* function (PurpleCertificate*) get_subject_name; 92 gboolean function (PurpleCertificate*, const(gchar)*) check_subject_name; 93 gboolean function (PurpleCertificate*, time_t*, time_t*) get_times; 94 GSList* function (const(gchar)*) import_certificates; 95 void function () _purple_reserved1; 96 void function () _purple_reserved2; 97 void function () _purple_reserved3; 98 } 99 100 struct _PurpleCertificateVerifier 101 { 102 gchar* scheme_name; 103 gchar* name; 104 void function (PurpleCertificateVerificationRequest*) start_verification; 105 void function (PurpleCertificateVerificationRequest*) destroy_request; 106 void function () _purple_reserved1; 107 void function () _purple_reserved2; 108 void function () _purple_reserved3; 109 void function () _purple_reserved4; 110 } 111 112 struct _PurpleCertificateVerificationRequest 113 { 114 PurpleCertificateVerifier* verifier; 115 PurpleCertificateScheme* scheme; 116 gchar* subject_name; 117 GList* cert_chain; 118 gpointer data; 119 PurpleCertificateVerifiedCallback cb; 120 gpointer cb_data; 121 } 122 123 version(Derelict_Link_Static) 124 { 125 extern( C ) nothrow 126 { 127 void purple_certificate_verify(PurpleCertificateVerifier* verifier, const(gchar)* subject_name, GList* cert_chain, PurpleCertificateVerifiedCallback cb, gpointer cb_data); 128 void purple_certificate_verify_complete(PurpleCertificateVerificationRequest* vrq, PurpleCertificateVerificationStatus st); 129 PurpleCertificate* purple_certificate_copy(PurpleCertificate* crt); 130 GList* purple_certificate_copy_list(GList* crt_list); 131 void purple_certificate_destroy(PurpleCertificate* crt); 132 void purple_certificate_destroy_list(GList* crt_list); 133 gboolean purple_certificate_signed_by(PurpleCertificate* crt, PurpleCertificate* issuer); 134 gboolean purple_certificate_check_signature_chain_with_failing(GList* chain, PurpleCertificate** failing); 135 gboolean purple_certificate_check_signature_chain(GList* chain); 136 PurpleCertificate* purple_certificate_import(PurpleCertificateScheme* scheme, const(gchar)* filename); 137 GSList* purple_certificates_import(PurpleCertificateScheme* scheme, const(gchar)* filename); 138 gboolean purple_certificate_export(const(gchar)* filename, PurpleCertificate* crt); 139 GByteArray* purple_certificate_get_fingerprint_sha1(PurpleCertificate* crt); 140 gchar* purple_certificate_get_unique_id(PurpleCertificate* crt); 141 gchar* purple_certificate_get_issuer_unique_id(PurpleCertificate* crt); 142 gchar* purple_certificate_get_subject_name(PurpleCertificate* crt); 143 gboolean purple_certificate_check_subject_name(PurpleCertificate* crt, const(gchar)* name); 144 gboolean purple_certificate_get_times(PurpleCertificate* crt, time_t* activation, time_t* expiration); 145 gchar* purple_certificate_pool_mkpath(PurpleCertificatePool* pool, const(gchar)* id); 146 gboolean purple_certificate_pool_usable(PurpleCertificatePool* pool); 147 PurpleCertificateScheme* purple_certificate_pool_get_scheme(PurpleCertificatePool* pool); 148 gboolean purple_certificate_pool_contains(PurpleCertificatePool* pool, const(gchar)* id); 149 PurpleCertificate* purple_certificate_pool_retrieve(PurpleCertificatePool* pool, const(gchar)* id); 150 gboolean purple_certificate_pool_store(PurpleCertificatePool* pool, const(gchar)* id, PurpleCertificate* crt); 151 gboolean purple_certificate_pool_delete(PurpleCertificatePool* pool, const(gchar)* id); 152 GList* purple_certificate_pool_get_idlist(PurpleCertificatePool* pool); 153 void purple_certificate_pool_destroy_idlist(GList* idlist); 154 void purple_certificate_init(); 155 void purple_certificate_uninit(); 156 gpointer purple_certificate_get_handle(); 157 PurpleCertificateScheme* purple_certificate_find_scheme(const(gchar)* name); 158 GList* purple_certificate_get_schemes(); 159 gboolean purple_certificate_register_scheme(PurpleCertificateScheme* scheme); 160 gboolean purple_certificate_unregister_scheme(PurpleCertificateScheme* scheme); 161 PurpleCertificateVerifier* purple_certificate_find_verifier(const(gchar)* scheme_name, const(gchar)* ver_name); 162 GList* purple_certificate_get_verifiers(); 163 gboolean purple_certificate_register_verifier(PurpleCertificateVerifier* vr); 164 gboolean purple_certificate_unregister_verifier(PurpleCertificateVerifier* vr); 165 PurpleCertificatePool* purple_certificate_find_pool(const(gchar)* scheme_name, const(gchar)* pool_name); 166 GList* purple_certificate_get_pools(); 167 gboolean purple_certificate_register_pool(PurpleCertificatePool* pool); 168 gboolean purple_certificate_unregister_pool(PurpleCertificatePool* pool); 169 void purple_certificate_display_x509(PurpleCertificate* crt); 170 void purple_certificate_add_ca_search_path(const(char)* path); 171 } 172 } 173 else 174 { 175 extern( C ) nothrow 176 { 177 alias da_purple_certificate_verify = void function(PurpleCertificateVerifier* verifier, const(gchar)* subject_name, GList* cert_chain, PurpleCertificateVerifiedCallback cb, gpointer cb_data); 178 alias da_purple_certificate_verify_complete = void function(PurpleCertificateVerificationRequest* vrq, PurpleCertificateVerificationStatus st); 179 alias da_purple_certificate_copy = PurpleCertificate* function(PurpleCertificate* crt); 180 alias da_purple_certificate_copy_list = GList* function(GList* crt_list); 181 alias da_purple_certificate_destroy = void function(PurpleCertificate* crt); 182 alias da_purple_certificate_destroy_list = void function(GList* crt_list); 183 alias da_purple_certificate_signed_by = gboolean function(PurpleCertificate* crt, PurpleCertificate* issuer); 184 alias da_purple_certificate_check_signature_chain_with_failing = gboolean function(GList* chain, PurpleCertificate** failing); 185 alias da_purple_certificate_check_signature_chain = gboolean function(GList* chain); 186 alias da_purple_certificate_import = PurpleCertificate* function(PurpleCertificateScheme* scheme, const(gchar)* filename); 187 alias da_purple_certificates_import = GSList* function(PurpleCertificateScheme* scheme, const(gchar)* filename); 188 alias da_purple_certificate_export = gboolean function(const(gchar)* filename, PurpleCertificate* crt); 189 alias da_purple_certificate_get_fingerprint_sha1 = GByteArray* function(PurpleCertificate* crt); 190 alias da_purple_certificate_get_unique_id = gchar* function(PurpleCertificate* crt); 191 alias da_purple_certificate_get_issuer_unique_id = gchar* function(PurpleCertificate* crt); 192 alias da_purple_certificate_get_subject_name = gchar* function(PurpleCertificate* crt); 193 alias da_purple_certificate_check_subject_name = gboolean function(PurpleCertificate* crt, const(gchar)* name); 194 alias da_purple_certificate_get_times = gboolean function(PurpleCertificate* crt, time_t* activation, time_t* expiration); 195 alias da_purple_certificate_pool_mkpath = gchar* function(PurpleCertificatePool* pool, const(gchar)* id); 196 alias da_purple_certificate_pool_usable = gboolean function(PurpleCertificatePool* pool); 197 alias da_purple_certificate_pool_get_scheme = PurpleCertificateScheme* function(PurpleCertificatePool* pool); 198 alias da_purple_certificate_pool_contains = gboolean function(PurpleCertificatePool* pool, const(gchar)* id); 199 alias da_purple_certificate_pool_retrieve = PurpleCertificate* function(PurpleCertificatePool* pool, const(gchar)* id); 200 alias da_purple_certificate_pool_store = gboolean function(PurpleCertificatePool* pool, const(gchar)* id, PurpleCertificate* crt); 201 alias da_purple_certificate_pool_delete = gboolean function(PurpleCertificatePool* pool, const(gchar)* id); 202 alias da_purple_certificate_pool_get_idlist = GList* function(PurpleCertificatePool* pool); 203 alias da_purple_certificate_pool_destroy_idlist = void function(GList* idlist); 204 alias da_purple_certificate_init = void function(); 205 alias da_purple_certificate_uninit = void function(); 206 alias da_purple_certificate_get_handle = gpointer function(); 207 alias da_purple_certificate_find_scheme = PurpleCertificateScheme* function(const(gchar)* name); 208 alias da_purple_certificate_get_schemes = GList* function(); 209 alias da_purple_certificate_register_scheme = gboolean function(PurpleCertificateScheme* scheme); 210 alias da_purple_certificate_unregister_scheme = gboolean function(PurpleCertificateScheme* scheme); 211 alias da_purple_certificate_find_verifier = PurpleCertificateVerifier* function(const(gchar)* scheme_name, const(gchar)* ver_name); 212 alias da_purple_certificate_get_verifiers = GList* function(); 213 alias da_purple_certificate_register_verifier = gboolean function(PurpleCertificateVerifier* vr); 214 alias da_purple_certificate_unregister_verifier = gboolean function(PurpleCertificateVerifier* vr); 215 alias da_purple_certificate_find_pool = PurpleCertificatePool* function(const(gchar)* scheme_name, const(gchar)* pool_name); 216 alias da_purple_certificate_get_pools = GList* function(); 217 alias da_purple_certificate_register_pool = gboolean function(PurpleCertificatePool* pool); 218 alias da_purple_certificate_unregister_pool = gboolean function(PurpleCertificatePool* pool); 219 alias da_purple_certificate_display_x509 = void function(PurpleCertificate* crt); 220 alias da_purple_certificate_add_ca_search_path = void function(const(char)* path); 221 } 222 223 __gshared 224 { 225 da_purple_certificate_verify purple_certificate_verify; 226 da_purple_certificate_verify_complete purple_certificate_verify_complete; 227 da_purple_certificate_copy purple_certificate_copy; 228 da_purple_certificate_copy_list purple_certificate_copy_list; 229 da_purple_certificate_destroy purple_certificate_destroy; 230 da_purple_certificate_destroy_list purple_certificate_destroy_list; 231 da_purple_certificate_signed_by purple_certificate_signed_by; 232 da_purple_certificate_check_signature_chain_with_failing purple_certificate_check_signature_chain_with_failing; 233 da_purple_certificate_check_signature_chain purple_certificate_check_signature_chain; 234 da_purple_certificate_import purple_certificate_import; 235 da_purple_certificates_import purple_certificates_import; 236 da_purple_certificate_export purple_certificate_export; 237 da_purple_certificate_get_fingerprint_sha1 purple_certificate_get_fingerprint_sha1; 238 da_purple_certificate_get_unique_id purple_certificate_get_unique_id; 239 da_purple_certificate_get_issuer_unique_id purple_certificate_get_issuer_unique_id; 240 da_purple_certificate_get_subject_name purple_certificate_get_subject_name; 241 da_purple_certificate_check_subject_name purple_certificate_check_subject_name; 242 da_purple_certificate_get_times purple_certificate_get_times; 243 da_purple_certificate_pool_mkpath purple_certificate_pool_mkpath; 244 da_purple_certificate_pool_usable purple_certificate_pool_usable; 245 da_purple_certificate_pool_get_scheme purple_certificate_pool_get_scheme; 246 da_purple_certificate_pool_contains purple_certificate_pool_contains; 247 da_purple_certificate_pool_retrieve purple_certificate_pool_retrieve; 248 da_purple_certificate_pool_store purple_certificate_pool_store; 249 da_purple_certificate_pool_delete purple_certificate_pool_delete; 250 da_purple_certificate_pool_get_idlist purple_certificate_pool_get_idlist; 251 da_purple_certificate_pool_destroy_idlist purple_certificate_pool_destroy_idlist; 252 da_purple_certificate_init purple_certificate_init; 253 da_purple_certificate_uninit purple_certificate_uninit; 254 da_purple_certificate_get_handle purple_certificate_get_handle; 255 da_purple_certificate_find_scheme purple_certificate_find_scheme; 256 da_purple_certificate_get_schemes purple_certificate_get_schemes; 257 da_purple_certificate_register_scheme purple_certificate_register_scheme; 258 da_purple_certificate_unregister_scheme purple_certificate_unregister_scheme; 259 da_purple_certificate_find_verifier purple_certificate_find_verifier; 260 da_purple_certificate_get_verifiers purple_certificate_get_verifiers; 261 da_purple_certificate_register_verifier purple_certificate_register_verifier; 262 da_purple_certificate_unregister_verifier purple_certificate_unregister_verifier; 263 da_purple_certificate_find_pool purple_certificate_find_pool; 264 da_purple_certificate_get_pools purple_certificate_get_pools; 265 da_purple_certificate_register_pool purple_certificate_register_pool; 266 da_purple_certificate_unregister_pool purple_certificate_unregister_pool; 267 da_purple_certificate_display_x509 purple_certificate_display_x509; 268 da_purple_certificate_add_ca_search_path purple_certificate_add_ca_search_path; 269 } 270 }